/**
 * 
 */
package graph;

/**
 * @author michaelyi
 *
 */
public interface BasicGraphInterface<T> {
	/** Task: Adds a given vertex to the graph.
	 * @return true if the vertex is added, or false if not
	 */
	public boolean addVertex(T vertexlabel);

	
	/** Task: Adds a weighted edge between two given distince vertices that are currently
	 * in the graph. The desired edge must not already be in the graph.
	 * @return true if the edge is added, or false if not
	 */
	public boolean addEdge(T begin, T end);
	
	/**
	 * Task: sees whether an edge exists between two given vertices.
	 */
	public boolean hasEdge (T begin, T end);
	
	/**
	 * Task: Sees whether the graph is empty.
	 */
	public boolean isEmpty();
	
	/**
	 * Task: Gets the number of vertices in the graph.
	 */
	public int getNumberOfVertices();
	
	/**
	 * Task: Gets the number of edges in the graph.
	 */
	public int getNumberOfEdges();
	
	/**
	 *  Task: Removes all vertices and edges from the graph.
	 */
	public void clear();
} // end BasicGraphInterface
